package com.project.collectAPI.entity.MeiTuan;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import java.util.List;

/**
 * 美团创建批量接口类
 * @param 作用 美团创建批量接口类
 * */

@Data
/**
 * 美团创建批量接口类
 * @param 作用 美团创建批量接口类
 *  @JsonInclude(JsonInclude.Include.NON_DEFAULT)
 */
public class MeituanGoods {

    //APP方门店id，即商家中台系统里门店的编码。如商家在操作绑定门店至开放平台应用中时，未绑定三方门店id信息，则默认APP方门店id与美团门店id相同。
    //示例值 25381
    //[必须]
    private String app_poi_code;

    //本次调用的操作类型标识：
    // (1)字段取值范围：1-创建，2-更新；
    // (2)此字段为非必填项，如不传则遵循：商品不存在就创建，商品存在则更新；
    // (3)如此字段传入了不在可选范围内的信息（非1或2），将直接返回错误信息。
    //[选填]
    private Integer operate_type;

    //多个商品数据集合的json格式数组：
    // (1)可传参数及逻辑与单个接口【retail/initdata 创建/更新商品】中各参数规则一致，请查看单个接口文档的详细描述。特殊说明：skus中的spec字段对于门店启用了类目属性且属性值中传递了销售属性则非必填，其余为必填。
    // (2)可传商品数据限定不能超过200组。
    // (3)支持商品部分同步成功，部分同步失败。但如因参数格式错误，则会全部失败。
        /*
        * [{
        "app_spu_code": "1001",
        "box_num": 1,
        "box_price": 0.5,
        "category_name": "日用百货",
        "is_sold_out": 1,
        "min_order_count": 1,
        "name": "电吹风",
        "description": "静音效果非常好",
        "unit": "个",
        "picture": "2B86BE5A5C23786232DE37A4717E0D93,86BE5A5C23786232DE37A4712324535,22BE5A5C23786232DE37A47123243567,",
        "sequence": 1,
        "price": "55",
        "tag_id": "200001291",
        "zh_id": "1002252",
        "product_name": "飞利浦多功率电吹风",
        "origin_name": "北京",
        "flavour": "可调节功率",
        "common_attr_value": [{
            "attrId": 100002441,
            "attrName": "品牌",
            "valueList": [{
                "valueId": 1018448,
                "value": "小西瓜"
            }]
        }, {
            "attrId": 100002137,
            "attrName": "产地",
            "valueList": [{
                "valueId": 130600,
                "value": "保定"
            }]
        }, {
            "attrId": 100002412,
            "attrName": "普通属性",
            "valueList": [{
                "valueId": 100001545,
                "value": "2"
            }]
        }, {
            "attrId": 100002442,
            "attrName": "大小",
            "valueList": [{
                "valueId": 100001574,
                "value": "大"
            }, {
                "valueId": 100001575,
                "value": "中"
            }]
        }],
        "skus": [{
            "sku_id": "0101",
            "spec": "1000W",
            "upc": "6964472386689",
            "price": "55",
            "stock": "10",
            "available_times": {
                "monday": "09:00-09:30",
                "tuesday": "09:00-09:30,12:30-14:00",
                "wednesday": "00:00-00:00",
                "thursday": "15:00-23:00",
                "friday": "10:00-23:00",
                "saturday": "19:00-22:30",
                "sunday": "09:00-09:30,13:30-15:00,20:00-21:00"
            },
            "location_code": "23",
            "box_num": "1",
            "box_price": "0",
            "weight": 430,
            "weight_for_unit": "430",
            "weight_unit": "克(g)",
            "openSaleAttrValueList": [{
                "attrId": 100002086,
                "valueId": 100001190,
                "value": "红"
            }, {
                "attrId": 100002144,
                "valueId": 100001263,
                "value": "S"
            }]
        }],
        "picture_contents": "http://p0.meituan.net/xianfu/63d5cb4cf120c89da74c1dd3e7c8bae651375.jpg, A71E7F8D324B269F6557EE24799335A9",
        "properties": [{
            "property_name": "颜色",
            "values": ["粉色", "白色"]
        }],
        "is_specialty": 1,
        "sell_point": "健康低脂",
        "video_id": 124123,
        "limit_sale_info": "{\"limitSale\":true,\"type\":3,\"begin\":\"20200209\",\"count\":30,\"end\":\"20200230\"}"
    }, { ...
    }]
    * */
    //[必须]
    private String food_data;
    @Data
    public static class fooddata{
        //（原app_food_code字段）APP方商品id，即商家中台系统里商品的编码（spu_code值）：
        // (1) 不同门店之间商品id可以重复，同一门店内商品id不允许重复；
        // (2)字段信息限定长度不超过128个字符。
        //[必须]
        private String app_spu_code;

        //商品名称：
        // (1)此字段信息限定长度不超过45个字符；
        // (2)不允许上传emoji等表情符；
        // (3)在门店的同一分类下商品名称不允许重复。
        //[创建时必填]
        private String name;

        //商品描述，此字段信息建议长度不超过150个字符。不允许传入html类信息。 更新时传递EMPTY_VALUE支持置空。
        //[选填]
        private String description;

        //标品upc码，传递该字段则根据upc码，调取美团平台商品信息填充，包括标题、图片、商品类目、包装规格/净含量、重量、重量单位、属性描述。
        // 1.本调取只是兜底，不改变商家已填写信息，举例：传递了该字段且未传递标题，则新建的商品会取平台商品信息中的商品标题进行存储。
        // 2.更新商品时不可传递该字段。
        // 3.属性描述为针对商品特征描述，不同类目具备不同属性描述，如商品类目为饮料/营养冲调—>饮用水—>矿泉水时属性描述包括品牌、产地、国产/进口、包装方式、适用人群等。
        // 4.属性描述调取填充目前未开放全部商品类目，未来随着平台推荐准确率提升逐步开放。
        // [ 否，更新时不可传递 ]
        private String standard_upc;


        //无条码商品是否使用平台推荐属性描述，
        // 1-不使用，2-使用，不传默认不使用
        // 1.选择使用：当商家未上传属性描述时，根据商家上传标题、类目、upc码信息调用平台推荐属性描述填充。
        // 1.属性描述为针对商品特征描述，不同类目具备不同属性描述，如商品类目为饮料/营养冲调—>饮用水—>矿泉水时属性描述包括品牌、产地、国产/进口、包装方式、适用人群等。
        // 2.属性描述调取填充目前未开放全部商品类目，未来随着平台推荐准确率提升逐步开放。 2.选择不使用：当商家未上传属性描述时，不调用平台推荐属性描述填充。 3.更新商品时不可传递该字段
        //[ 否，更新时不可传递 ]
        //李总这里选择 ==> 1 .不使用
        private Integer use_standard_cate;


        /*
         * APP方商品的skus信息字符串，支持同时传多个sku信息。
         * 注：如果skus中传递box_num、box_price，以skus中信息为准；如未传递box_num、box_price，以外层参数为准。
         * 如果销售属性openSaleAttrValueList字段不为空，则多规格sku数量最大支持255个，若销售属性openSaleAttrValueList字段为空或未传递则多规格sku数量最大支持上限30个。
         * [ 否，更新时不可传递 ]
         *
         * */
        private List<skusObjects> skus;

        //skus子商品类
        @Data
        public static class skusObjects{

            //sku_id
            //是sku唯一标识码，字段信息限定长度不能超过40个字符。不允许上传emoji等表情符。
            //[ 必须 ] 实例值:01010
            private String sku_id;

            //sku的规格名称。字段信息限定长度不能超过20个字符。不允许上传emoji等表情符。
            // 如创建单规格商品，本参数可不传；如创建多规格商品，本参数必传。 更新时传递EMPTY_VALUE支持置空。
            //示例值： 1000W
            //[ 创建时门店启用类目属性且skus中传递了销售属性则为非必填(会自动根据销售属性组合其规格)，其余情况参考字段描述里规则。 更新商品时，本参数非必填。 ]
            private String spec;

            //商品sku的售卖单位。注意：商户端后台已去掉售卖单位字段，默认单位为“份”。本参数不建议使用了，请无需上传，后续接口规则也会全部默认使用“份”。
            // 参数逻辑： 1.如此字段有值，优先取此处值。如入参符合枚举值（枚举值有：份、盒、件、箱、袋、筐、双、捆、把、提、包、个），取入参值；如入参不符合枚举值，则默认为“份”。
            // 2.如此字段无值而外层SPU字段有值，取外层值。外层入参符合枚举值（枚举值有：份、盒、件、箱、袋、筐、双、捆、把、提、包、个），取入参值；如外层入参不符合枚举值，则默认为“份”。
            // 3.如此字段和外层SPU字段都没传，取系统默认值“份”。
            //[ 选填 ]
            private String unit;

            //一个订单中此商品sku的最小购买量：
            // 1.大等于1的正整数。
            // 2.如此字段有值，优先取此处值。
            // 3.如此字段无值而外层SPU字段有值，取外层值。
            // 4.如此字段和外层SPU字段都没传，取系统默认值"1"。
            //[ 选填 ] 示例值：2
            private Integer min_order_count;

            //为sku的价格，单位是元，最多支持2位小数，不能为负数；字段信息最大允许上传50000。
            //[ 创建时必填 ] 示例值：55
            private String price;

            //sku的库存量，不能为负数或小数；传"*"表示设置商品库存为平台当前允许的最大值99999。
            //[ 创建时必填 ] 示例值：10
            private String stock;

            //为sku的商品包装上的条形码编号，UPC/EAN码；字符长度8位或者13位；字符内容范围是中文、字母、数字。
            // 特殊字段逻辑： 1.新增或更新商品时如无upc字段则可传"no_upc"，跳过校验。
            // 2.更新时若想置空upc需传入EMPTY_VALUE支持置空。
            //[ 选填 ] 示例值：1234567
            private String upc;


            //表示sku的料位码，商品在商家线下货架的位置；字段信息限定长度不超过40个字符。
            // 不允许上传emoji等表情符。
            // 更新时传递EMPTY_VALUE支持置空。
            private String location_code;


            //表示sku的重量，单位为克/g；字段信息最大允许上传200000。不能传负数或小数。
            //[ 创建时必填，与weight_for_unit至多填写一个 ] 示例值：430
            private Long weight;


            //表示sku的重量数值信息，最多支持两位小数。
            // 注：重量信息与重量单位的组合，不得超过200千克。重量单位为“克”“毫升”时，重量信息不能为小数。
            // 重量单位为“磅”时，重量信息不能为小数且不得超过440。重量单位为“斤”时，重量信息不能超过400斤。重量单位为“两”时，重量信息不能超过4000两。
            // [ 创建时必填，与weight至多填写一个 ]  示例值：1.12
            private String weight_for_unit;


            //表示sku的重量数值单位，枚举值如下： 1."克(g)" 2."千克(kg)" 3."毫升(ml)" 4."升(L)" 5."磅" 6."斤" 7."两"。
            //[ 创建时必填 ] 示例值：升(L)
            private String weight_unit;

            //包装费老计费规则，表示：商品sku单件需使用打包盒的数量，不能为负数或小数，需在0-100之间。
            // 1.创建时，传了skus信息，则本参数box_num如不传则默认为1。
            // 2.更新时，如不传则取外层box_num值，如外层没有传，则保持原值不变。
            // 3.医药商家暂不支持设置包装费，无论上传多少，系统均默认以0元为准。 注：如原规则为阶梯计费，更新时仅传了box_price，则本参数默认的原值为兼容值1。则本参数默认的原值为兼容值1。
            //[ 选填 ] 示例值：1
            private String box_num;


            //包装费老计费规则，表示：商品sku单个打包盒的价格，单位是元，不能为负数，需在0-100之间。
            // 1.创建时，传了skus信息，则本参数box_price如不传则默认为0。
            // 2.更新时，如果没传包装费信息（新/旧字段），则取外层box_price值，如外层没有传，则保持原值不变。
            // 注：如原规则为阶梯计费，更新时仅传了box_num，则本参数默认的原值为原ladder_box_price的值。
            // 3.商品包装费box_num*box_price最大不能高于2元，如果上传数据结果大于2元，默认以2元为准。
            // 4.医药商家暂不支持设置包装费，无论上传多少，系统均默认以0元为准。
            //[ 选填 ] 示例值：0
            private String box_price;


            //包装费阶梯计价规则，表示：每M件商品收取N元包装费中的M。
            // 1.仅支持传[1,100]的整数。
            // 2.ladder_box_num和ladder_box_price要么同时传，要么均不传。
            // 3.ladder_box_num和ladder_box_price的组合与box_num或box_price互斥。
            // 4.医药商家暂不支持设置包装费，无论上传多少，系统均默认以0元为准。
            //[ 选填 ] 示例值：3
            private String ladder_box_num;

            //包装费阶梯计价规则，表示：每M件商品收取N元包装费中的N。
            // 1.仅支持传[0,2]，最多支持两位小数。
            // 2.ladder_box_num和ladder_box_price要么同时传，要么均不传。
            // 3.ladder_box_num和ladder_box_price的组合与box_num或box_price互斥。
            // 4.医药商家暂不支持设置包装费，无论上传多少，系统均默认以0元为准。
            //[ 选填 ] 示例值：1.5
            private String ladder_box_price;


            //商品销售属性
            // 1.仅支持类目属性的品类下的门店传递后有值。
            // 2.销售属性列表可通过 category/attr/list、category/attr/value/list 接口获取。
            // 3.上传销售属性值ID、值value支持自定义。
            //[ 选填 ]
            private List<SaleObject> openSaleAttrValueList;



            @Data
            public static class SaleObject{

                //销售属性id，不支持自定义
                //示例值：100002086
                private Long attrId;

                //属性名称
                private String attrName;


                private List<Object> valueList;

                //销售属性值id。当属性值录入方式为文本时，该参数无需上传；若该销售属性可扩展则支持自定义：
                // 1.负值
                // 2.同一个商品的同一个销售属性内唯一
                //private Long valueId;

                //销售属性值，支持自定义
                //示例值："红"
                //private String value;

            } //SaleObject End

        } //skusObjects End


        //创建时，如不传skus信息，则本参数必填。
        private float  price;

        //一个订单中此商品的最小购买量。创建商品时，min_order_count字段信息如不传则默认为1，仅支持填写1-50。
        private int min_order_count;

        //商品的售卖单位。
        // 1.创建商品时，unit字段信息如不传则默认为“份”。
        // 2.如上传的单位信息不在美团商家端中心枚举值范围内，则平台会默认使用“份”。（枚举值有：份、盒、件、箱、袋、筐、双、捆、把、提、包、个。）
        private String unit;

        //单个商品需使用的打包盒数量，需在0-100之间。
        // 如skus字段内传递了box_num信息，以skus内信息为准。创建商品时，box_num字段信息如不传则默认为
        // 1。 注：医药商家暂不支持设置包装费，无论上传多少，系统均默认以0元为准。
        @JsonIgnore
        private float box_num;

        //单个打包盒的价格，单位是元，需在0-100之间。
        // (1)字段值不能为负数；
        // (2)如skus字段内传递了box_price信息，以skus内信息为准。
        // 创建商品时，box_price字段信息如不传则默认为0元。
        // 注：医药商家暂不支持设置包装费，无论上传多少，系统均默认以0元为准。
        @JsonIgnore
        private float box_price;


        //分类id：
        // (1)category_code与category_name、category_code_list、category_name_list字段必须且只能填写一个。
        // (2)此字段信息需传入末级的分类id。
        // (3)若所传分类id在门店内不存在则返回错误信息，商品同步失败。
        // (4)如所传分类下已存在与当前商品名称重复的商品则返回错误信息，商品同步失败。
        // [ 创建时：category_name与category_code、category_code_list、category_name_list字段必须且只能填写一个 更新时非必填 ]
        // 示例值：B01
        private String category_code;


        //分类名称
        // ：(1)限定长度不超过8个字符。
        // (2)category_name与category_code、category_code_list、category_name_list字段必须且只能填写一个。
        // (3)此字段信息需传入末级的分类名称。
        // (4)如所传分类名称在门店内不存在，则会直接新建此分类名称为一级分类。
        // (5)如所传分类下已存在与当前商品名称重复的商品则返回错误信息，商品同步失败。
        // （6）不允许上传emoji等表情符。
        // [ 创建时：category_name与category_code、category_code_list、category_name_list字段必须且只能填写一个 更新时非必填
        // 示例值：家用电器
        private String category_name;


        //分类id列表，用于同步商品多个分类信息。
        // (1)此字段上传末级商品分类，多个分类id以英文逗号隔开，最多支持上传5个分类信息。
        // (2)category_code_list与category_name、category_code、category_name_list字段必须且只能填写一个。
        // (3)如所传分类id任意一个在门店内不存在则本次同步失败，返回错误信息。
        // (4)所传分类下如已存在与当前商品名称重复的商品，则商品同步失败。
        // (5)更新逻辑下，所传分类信息将全部覆盖所有原分类；如本次更新失败，则商品原分类信息保持不变。
        // [ 创建时：category_code_list与category_name、category_code、category_name_list字段必须且只能填写一个 更新时非必填 ]
        // 示例值: ["1111","2222"]
        private String category_code_list;



        //分类名称列表，用于同步商品多个分类信息。
        // (1)此字段上传末级商品分类，多个分类名称以英文逗号隔开，最多支持上传5个分类信息，每个分类名称长度不能超过8个字符。
        // (2)category_name_list与category_name、category_code、category_code_list字段必须且只能填写一个。
        // (3)所传分类下如已存在与当前商品名称重复的商品，则本次同步失败。
        // (4)如所传分类名称在门店内不存在，则会直接新建此分类名称为一级分类。
        // (5)更新逻辑下，所传分类信息将全部覆盖所有原分类；如本次更新失败，则商品原分类信息保持不变。（6）不允许上传emoji等表情符。
        // [ 创建时：category_name_list与category_name、category_code、category_code_list字段必须且只能填写一个 更新时非必填 ]
        // 示例值: ["多分类a","多分类b"]
        private String category_name_list;


        //商品上下架状态，字段取值范围：0-上架，1-下架。
        // 创建商品时，本参数如传的不是0,1或不传，则默认为下架状态。
        // [ 选填 ] 示例值：0
        private int is_sold_out;


        //商品图片，建议必须传，不传不支持上架商品。
        // (1)此字段支持直接传入图片URL地址，但强烈建议传入图片ID的形式，可通过【图片上传API】接口上传图片至美团系统，得到对应的图片ID。
        // (2)支持[jpg][jpeg][png]格式的图片，图片最佳比例建议1:1，同前端展示比例。
        // (3)自2018.8.14日升级后，门店品类为服饰鞋帽、美妆、日用品、母婴、生鲜果蔬、生活超市下的便利店/超市，支持传入多张图片，以英文逗号隔开，最多传8张，其他品类门店仍只支持单图。
        // (4)图片同步逻辑：
        //          a）picture字段如不传该字段或字段值为空，不会修改商品原图片。
        //          b）更新商品图片时，新上传单张或多张图时，均会覆盖商品原所有原图片。
        //          c）所传图片若均同步失败，不会影响商品其他信息同步，此时默认该字段值为空，同时接口将返回图片同步失败的提示。建议商家先使用【图片上传api】接口将图片传给美团，减少因直接传外部URL导致的同步失败。
        //          d）所传图片若为多张时，支持图片部分成功，图片按顺序递补，同时接口将返回同步失败的图片信息。
        // [ 选填 ] 示例值：
        // 单张图片： "2B86BE5A5C23786232DE37A4717E0D93"
        // 多张图片： "2B86BE5A5C23786232DE37A4717E0D93,86BE5A5C23786232DE37A4712324535,22BE5A5C23786232DE37A47123243567"
        private String picture;

        //商品在当前分类下的排序：(1)数字越小，排位越靠前；(2)此字段若不传，则默认值为-1。
        //[ 选填 ] 示例值：1
        private int sequence;

        //美团内部商品类目id：
        // (1)请先通过【retail/getSpTagIds 获取商品类目】接口获取平台最新的类目信息和末级类目id，本字段仅允许传入商品所属的末级类目id。
        // (2)如创建商品时商家未传递本字段，平台会进行类目自动推荐匹配。
        // （注意：系统自动匹配推荐类目时，可能存在匹配结果与实际商品应属类目不相符或匹配失败的情况，那么商品的类目信息可能不准确，也可能仍然为空。
        // 所以，强烈建议商家自行上传商品类目信息，减少和避免商品审核时被驳回，导致商品不能上架售卖的问题。）
        // [ 门店启用类目属性并且传递了销售或普通属性则  1.创建时必传，2.若商品创建时未传tag_id，更新时必传(只需传一次)。 门店未启用类目属性或未传递销售属性/普通属性则非必传。 ]
        // 示例值: 200001291
        private Long tag_id;

        //商品的品牌id：商家可对接category/attr/value/list 查询特殊属性（品牌、产地）接口，查询平台已收录品牌，获取品牌ID。
        // 示例值: 1002252
        private Long zh_id;

        //商品的产地：(1)字段信息限定长度不超过30个字符；(2)不允许上传emoji等表情符，仅支持中文、字母。
        // 示例值: 北京
        private String origin_name;

        //商品的图片详情：
        // (1)仅门店品类为生活百货->超市/便利店、生鲜果蔬、服装、日用品、母婴、美妆，支持传入图片详情；
        // (2)上限20张，多个图片用英文逗号分隔；
        // (3)支持使用图片URL或【上传图片API】接口返回的图片ID；
        // (4)图片格式支持JPG、JPEG、PNG、BMP、JPEG2000，每张图大小不能超过2M，推荐尺寸为640*960；
        // (5)如果传入空字符串，即""，代表要置空图片详情，如果既不想置空又不想更新图片，请不要上传该字段。
        // (6)【注意】商品详情图片的宽不能小于640，高不能大于50000
        // [ 选填 ]
        // 示例值: http://p0.meituan.net/xianfu/63d5cb4cf120c89da74c1dd3e7c8bae651375.jpg, A71E7F8D324B269F6557EE24799335A9
        private String picture_contents;

        //商品的属性信息
        // 1.字段信息为json格式数组，最多支持上传10组属性。
        // 2.若上传该商品属性参数，则property_name和values必传。
        // 3.支持传入特殊字符串“EMPTY_VALUE”，置空该字段原值。
        // [ 选填 ]
        // 示例值: [{"property_name":"颜色","values":["粉色","白色"]},{"property_name":"规格","values":["大号","中号","小号"]}]
        private String properties;
        @Data
        public static class propertiesObject{
            //属性名称。 1.限制长度最多不能超过20个字符。 2.不允许上传emoji等表情符。
            //[ 若传了properties参数，则必须传本参数。 ]  示例值: "颜色"
            private String property_name;

            //属性值list：
            // 1.字段传入值为json格式，每组最多支持传10个值，以英文逗号隔开。
            // 2.每组属性限制长度最多不能超过255个字符。
            // 3.不允许上传emoji等表情符。
            //[ 若传了properties参数，则必须传本参数。 ]  示例值: ["粉色","白色"]
            private String values;
        }

        //是否为“力荐”商品，字段取值范围：0-否， 1-是。单个门店最多支持设置100个力荐商品。
        //[ 选填 ] 示例值：1
        private int is_specialty;



        //是否为“单点不送”商品，字段取值范围：0-否，1-是。
        //[ 选填 ] 示例值：1
        private int is_single_no_delivery;

        //视频ID
        //[ 选填 ] 示例值：123123123
        private Long video_id;

        //商品普通属性的json字符串
        // 1.仅支持类目属性的品类下的门店传递后有值。
        // 2.普通属性列表可通过 category/attr/list、category/attr/value/list 接口获取。
        // 3.该普通属性可扩展则支持自定义值id和值value。
        //示例值
        /*
                [{
                    "attrId": 100002441,
                    "attrName": "品牌",
                    "valueList": [{
                        "valueId": 1018448,
                        "value": "小西瓜"
                    }]
                }, {
                    "attrId": 100002137,
                    "attrName": "产地",
                    "valueList": [{
                        "valueId": 130600,
                        "value": "保定"
                    }]
                }, {
                    "attrId": 100002412,
                    "attrName": "普通属性",
                    "valueList": [{
                        "valueId": 100001545,
                        "value": "2"
                    }]
                }, {
                    "attrId": 100002442,
                    "attrName": "大小",
                    "valueList": [{
                        "valueId": 100001574,
                        "value": "大"
                    }, {
                        "valueId": 100001576,
                        "value": "小"
                    }]
                }]
        * */
        // [ 若美团内部类目tag_id对应的标准普通类目属性有必填项，则创建时必填，否则创建/更新均非必填 ]
        private List<commonAttrClass> common_attr_value;
        @Data
        public static class commonAttrClass{
            //普通属性Id
            //示例值： 10005
            private Long attrId;
            //普通属性名称
            //示例值： 适用对象
            private String attrName;
            private List<valueObj> valueList;
            public static class valueObj{
                //普通属性值Id，当属性值录入方式为文本时，该参数无需上传；若该普通属性可扩展则支持自定义 1.负值 2.同一个商品的同一个普通属性内唯一
                //示例值： 25
                public Long valueId;
                //普通属性值名称(与普通属性值Id一一对应)，支持自定义。
                //示例值： 老人
                public String value;
            }
        } //commonAttrClass End

        //商品为标品时是否展示品牌图片详情（由平台商品库提供）
        // 1、当picture_contents图片详情字段有值时，用户端不展示品牌图片详情；
        // 2、当picture_contents图片详情字段信息为空时，可控制品牌图片详情是否展示到用户端1-展示或2-不展示，不传则创建时默认展示；
        // 3、标品图片详情不存在则此参数无意义
        //[ 选填 ] 示例值：1
        private int is_show_upc_pic_contents;


        //商品限购详情
        //[ 选填 ] 示例值：{"limitSale":true,"type":1,"begin":"20200216","count":10.6,"end":"20200221"}
        private String limit_sale_info;
        @Data
        public static class limitsaleinfo{
            //是否限制购买数量：
            // (1)字段取值范围：1.true-开启；false-关闭。
            // (2)如开启限制，则对SPU下所有SKU生效，每个SKU均按设置规则执行限购。
            // (3)如入参选择“不限制”，则后续参数入参也无效。
            // (4)如入参选择“限制”，则开启单个买家限购功能。
            //[ [必须] ] 示例值：true
            private boolean limitSale;

            //限购规则： 1-限制下单顾客每X天限购数量，X为frequency，不传默认为1；2-限制整个周期内下单顾客限购数量。
            //[ 如限购开启则必填 ] 示例值：1
            private int type;

            //限购循环天数： 最大31，最小1。
            //[ 选填 ] 示例值：1
            private int frequency;

            //限购开始日期： 开始时间不得早于当前日期的7天前。
            //[ 如限购开启则必填 ] 示例值：20200216
            private String begin;

            //限购结束日期： 结束日期不得早于开始日期，且与开始日期相距不得超出90天。
            //[ 如限购开启则必填 ] 示例值：20200221
            private String end;

            //限购数量：
            // (1)字段范围：整数，最小为1。
            // (2)如入参为小数，则向下取整（例如：入参数量为2.8，最终取2）。
            // [ 如限购开启则必填 ] 示例值：10
            private int count;

        } //limitsaleinfo End


        //商品条码图
        //[ 选填 ] 示例值：2B86BE5A5C23786232DE37A4717E0D93
        private String upc_image;

        //商品卖点  (1)限制长度最多不能超过10个字符。 (2)不允许上传emoji等表情符。 (3)支持传入特殊字符串“EMPTY_VALUE”，置空该字段原值。
        //[ 选填 ] 示例值：健康低脂
        private String sell_point;

        //1:正常商品,
        // 2预售商品，不填默认为1，该字段为2时delivery_time必填 买家购买“预售”商品，接单后可不用立即发货，可按照用户选择的指定送达时间完成发货配送（用户选择的送达时间不会早于您设置的“发货时间”）
        //[ 选填 ] 示例值：2
        private int sale_type;


        //秒级时间戳，可选日期为当天后的31天内
        // （如：当前日期是4月30日，发货时间可选择范围5月1日 ~6月1日的日期，包含5月1日和6月1日）
        //[ 选填 ] 示例值：1624257067
        private int delivery_time;


        //秒级时间戳，可选日期为当天后的31天内，若不传deliver_end_time则默认delivery_time后6天
        // （如：当前日期是4月30日，发货时间可选择范围5月1日 ~6月1日的日期，包含5月1日和6月1日）
        //[ 选填 ] 示例值：1624257067
        private int delivery_end_time;


        //表示spu周期性可售时间： (a)字段内从Monday到Sunday的7天都需要上传且需填写时段，每个日期之间、多个时段之间都用英文逗号隔开； (b)如一天内有多个可售时段，每个时段须按时间顺序排列且不允许存在交集； (c)如需设置某天整日不可售，可以传空字符串""。 (d)创建商品时如不传available_times字段，则默认商品的可售时间与门店营业时间一致； (e)更新商品时，此字段如不传则保持原设置不变。
        //[ 选填，且available_times和appoint_available_times不可同时传递 ]
        // 示例值：{"monday":"09:00-09:30","tuesday":"09:00-09:30,12:30-14:00","wednesday":"","thursday":"15:00-23:00","friday":"10:00-23:00","saturday":"19:00-22:30","sunday":"09:00-09:30,13:30-15:00,20:00-21:00"}
        private String available_times;


        //表示spu指定可售时间：
        // (a)只传开始时间，结束时间传0，表示指定时间点开始售卖
        // (b)开始时间与结束时间均有值，表示指定时间段售卖
        // (c)开始时间与结束时间不可同时为0
        // (d)开始时间必须早于结束时间
        // (e)时间必须为秒级时间戳
        // (f)不支持医药品类门店
        //[ 选填，且available_times和appoint_available_times不可同时传递 ]
        // 示例值：{"start_time":1624257067,"end_time":1624257089}
        private String appoint_available_times;


        //传递EMPTY_VALUE，代表清空可售时间，变为全时段可售，其余无意义 预计8月中旬上线
        //[ 选填, 且和available_times、appoint_available_times不可同时传递 ] 示例值：EMPTY_VALUE
        private String all_available_times;


        //商品资质图片，非必填，医疗器械必须传，保健食品、特殊医学配方食品建议传。
        // (1)此字段支持直接传入图片URL地址，但强烈建议传入图片ID的形式，可通过【图片上传API】接口上传图片至美团系统，得到对应的图片ID。
        // (2)支持[jpg][jpeg][png]格式的图片，图片最佳比例建议1:1，同前端展示比例。
        // (3)支持传入1-3张图片，以英文逗号隔开。
        // (4)图片同步逻辑：
        //      a）商品资质picture字段如不传该字段或字段值为空，不会修改商品原图片。
        //      b）更新商品图片时，新上传单张或多张图时，均会覆盖商品原所有原图片。
        //      c）所传图片若均同步失败，不会影响商品其他信息同步，此时默认该字段值为空，同时接口将返回图片同步失败的提示。建议商家先使用【图片上传api】接口将图片传给美团，减少因直接传外部URL导致的同步失败。
        //      d）所传图片若为多张时，支持图片部分成功，图片按顺序递补，同时接口将返回同步失败的图片信息。
        //[ 选填 ]
        // 示例值：单张图片:"2B86BE5A5C23786232DE37A4717E0D93",多张图片："2B86BE5A5C23786232DE37A4717E0D93,86BE5A5C23786232DE37A4712324535"
        private String qua_pictures;


        //商品资质有效期，传10位秒级的时间戳。-1：永久有效。
        //[ 选填 , 如果qua_pictures传值则qua_effective_date必填 ] 示例值：1666901046
        private int qua_effective_date;


        //批准日期，格式为10位秒级的时间戳。
        //[ 选填 , 如果qua_pictures传值则qua_approval_date必填 ] 示例值：1616903549
        private int qua_approval_date;


        //医药健康类商品最近有效期，格式: 年-月-日
        //[ 选填 ] 示例值：2022-06-01
        private String expiry_date;

    } //fooddata End








} //MeituanGoods End
